/*========================== begin_copyright_notice ============================

Copyright (C) 2020-2021 Intel Corporation

SPDX-License-Identifier: MIT

============================= end_copyright_notice ===========================*/

#include "../imf.h"
#pragma OPENCL FP_CONTRACT OFF
typedef struct
{

    unsigned long _dC[16];
    unsigned long _dP0[16];
    unsigned long _dP1[16];
    unsigned long _dP2[16];
    unsigned long _dP3[16];
    unsigned long _dP4[16];
    unsigned long _dP5[16];
    unsigned long _dP6[16];
    unsigned long _dP7[16];
    unsigned long _dP8[16];
    unsigned long _dP9[16];
    unsigned long _dP10[16];
    unsigned long _dP11[16];
    unsigned long _dP12[16];
    unsigned long _dP13[16];
    unsigned long _dP14[16];
    unsigned long _dP15[16];
    unsigned long _dP16[16];
    unsigned long _dP17[16];
    unsigned int _iExpMantMask_UISA;
    unsigned int _iMinIdxOfsMask_UISA;
    unsigned int _iMaxIdxMask_UISA;

    unsigned long _dbP[60 * 16];

    unsigned long _dbHighMask;
    unsigned long _dbSignMask;
    unsigned long _dbAbsMask;
    unsigned int _iExpMantMask;
    unsigned int _iExpMask;
    unsigned int _iMinIdxOfsMask;
    unsigned int _iMaxIdxMask;
    unsigned int _iMaxTinyArg;
} __internal_dtanh_la_data_t;
static __constant __internal_dtanh_la_data_t __internal_dtanh_la_data = {
    {
     0x0000000000000000uL, 0x3fcc000000000000uL, 0x3fd4000000000000uL, 0x3fdc000000000000uL,
     0x3fe4000000000000uL, 0x3fec000000000000uL, 0x3ff4000000000000uL, 0x3ffc000000000000uL,
     0x4004000000000000uL, 0x400c000000000000uL, 0x4014000000000000uL, 0x401c000000000000uL,
     0x4024000000000000uL, 0x402c000000000000uL, 0x4034000000000000uL, 0x0000000000000000uL,
     },
    {
     0x0000000000000000uL, 0x3fcb8fd0416a7c92uL, 0x3fd35f98a0ea650euL, 0x3fda5729ee488037uL,
     0x3fe1bf47eabb8f95uL, 0x3fe686650b8c2015uL, 0x3feb2523bb6b2deeuL, 0x3fee1fbf97e33527uL,
     0x3fef9258260a71c2uL, 0x3feff112c63a9077uL, 0x3fefff419668df11uL, 0x3feffffc832750f2uL,
     0x3feffffffdc96f35uL, 0x3fefffffffffcf58uL, 0x3ff0000000000000uL, 0x3ff0000000000000uL,
     },
    {
     0x0000000000000000uL, 0x3c65e23ebcd3bcbeuL, 0xbc4c600bac3adf00uL, 0x3c6c44091785d040uL,
     0x3c8221d7a6e3674buL, 0x3c69f89d2cf6b85cuL, 0x3c73b3e9ec0b8f1cuL, 0xbc7f8d4b0428aadauL,
     0xbc7c52d880cf43c0uL, 0x3c7dd36e37096480uL, 0x3c7b4f6380c442cauL, 0xbc729755de470096uL,
     0x3c84cf852845efbduL, 0x3c6fc4fb440a5378uL, 0xbc63981083b55870uL, 0x0000000000000000uL,
     }, {
         0x3ff0000000000000uL, 0x3fee842ca3f08532uL, 0x3fed11574af58f1buL, 0x3fea945b9c24e4f9uL,
         0x3fe6284c3374f815uL, 0x3fe02500a09f8d6euL, 0x3fd1f25131e3a8c0uL, 0x3fbd22ca1c24a139uL,
         0x3f9b3afe1fba5c76uL, 0x3f6dd37d19b22b21uL, 0x3f27ccec13a9ef96uL, 0x3ecbe6c3f33250aeuL,
         0x3e41b4865394f75fuL, 0x3d8853f01bda5f28uL, 0x3c73953c0197ef58uL, 0x0000000000000000uL,
         },
    {
     0xbbf0b3ea3fdfaa19uL, 0xbfca48aaeb53bc21uL, 0xbfd19921f4329916uL, 0xbfd5e0f09bef8011uL,
     0xbfd893b59c35c882uL, 0xbfd6ba7cb7576538uL, 0xbfce7291743d7555uL, 0xbfbb6d85a01efb80uL,
     0xbf9addae58c7141auL, 0xbf6dc59376c7aa19uL, 0xbf27cc5e74677410uL, 0xbecbe6c0e8b4cc87uL,
     0xbe41b486526b0565uL, 0xbd8853f01bef63a4uL, 0xbc73955be519be31uL, 0x0000000000000000uL,
     },
    {
     0xbfd5555555555555uL, 0xbfd183afc292ba11uL, 0xbfcc1a4b039c9bfauL, 0xbfc16e1e6d8d0be6uL,
     0xbf92426c751e48a2uL, 0x3fb4f152b2bad124uL, 0x3fbbba40cbef72beuL, 0x3fb01ba038be6a3duL,
     0x3f916df44871efc8uL, 0x3f63c6869dfc8870uL, 0x3f1fb9aef915d828uL, 0x3ec299d1e27c6e11uL,
     0x3e379b5ddcca334cuL, 0x3d8037f57bc62c9auL, 0x3c6a2d4b50a2cff7uL, 0x0000000000000000uL,
     },
    {
     0xbce6863ee44ed636uL, 0x3fc04dcd0476c75euL, 0x3fc43d3449a80f08uL, 0x3fc5c26f3699b7e7uL,
     0x3fc1a686f6ab2533uL, 0x3faf203c316ce730uL, 0xbf89c7a02788557cuL, 0xbf98157e26e0d541uL,
     0xbf807b55c1c7d278uL, 0xbf53a18d5843190fuL, 0xbf0fb6bbc89b1a5buL, 0xbeb299c9c684a963uL,
     0xbe279b5dd4fb3d01uL, 0xbd7037f57ae72aa6uL, 0xbc5a2ca2bba78e86uL, 0x0000000000000000uL,
     },
    {
     0x3fc1111111112ab5uL, 0x3fb5c19efdfc08aduL, 0x3fa74c98dc34fbacuL, 0xbf790d6a8eff0a77uL,
     0xbfac3c021789a786uL, 0xbfae2196b7326859uL, 0xbf93a7a011ff8c2auL, 0x3f6e4709c7e8430euL,
     0x3f67682afa611151uL, 0x3f3ef2ee77717cbfuL, 0x3ef95a4482f180b7uL, 0x3e9dc2c27da3b603uL,
     0x3e12e2afd9f7433euL, 0x3d59f320348679bauL, 0x3c44b61d9bbcc940uL, 0x0000000000000000uL,
     },
    {
     0xbda1ea19ddddb3b4uL, 0xbfb0b8df995ce4dfuL, 0xbfb2955cf41e8164uL, 0xbfaf9d05c309f7c6uL,
     0xbf987d27ccff4291uL, 0x3f8b2ca62572b098uL, 0x3f8f1cf6c7f5b00auL, 0x3f60379811e43dd5uL,
     0xbf4793826f78537euL, 0xbf2405695e36240fuL, 0xbee0e08de39ce756uL, 0xbe83d709ba5f714euL,
     0xbdf92e3fc5ee63e0uL, 0xbd414cc030f2110euL, 0xbc2ba022e8d82a87uL, 0x0000000000000000uL,
     },
    {
     0xbfaba1ba1990520buL, 0xbf96e37bba52f6fcuL, 0x3ecff7df18455399uL, 0x3f97362834d33a4euL,
     0x3f9e7f8380184b45uL, 0x3f869543e7c420d4uL, 0xbf7326bd4914222auL, 0xbf5fc15b0a9d98fauL,
     0x3f14cffcfa69fbb6uL, 0x3f057e48e5b79d10uL, 0x3ec33b66d7d77264uL, 0x3e66ac4e578b9b10uL,
     0x3ddcc74b8d3d5c42uL, 0x3d23c589137f92b4uL, 0x3c107f8e2c8707a1uL, 0x0000000000000000uL,
     },
    {
     0xbe351ca7f096011fuL, 0x3f9eaaf3320c3851uL, 0x3f9cf823fe761fc1uL, 0x3f9022271754ff1fuL,
     0xbf731fe77c9c60afuL, 0xbf84a6046865ec7duL, 0xbf4ca3f1f2b9192buL, 0x3f4c77dee0afd227uL,
     0x3f04055bce68597auL, 0xbee2bf0cb4a71647uL, 0xbea31eaafe73efd5uL, 0xbe46abb02c4368eduL,
     0xbdbcc749ca8079dduL, 0xbd03c5883836b9d2uL, 0xbbf07a5416264aecuL, 0x0000000000000000uL,
     },
    {
     0x3f9664f94e6ac14euL, 0xbf94d3343bae39dduL, 0xbf7bc748e60df843uL, 0xbf8c89372b43ba85uL,
     0xbf8129a092de747auL, 0x3f60c85b4d538746uL, 0x3f5be9392199ec18uL, 0xbf2a0c68a4489f10uL,
     0xbf00462601dc2faauL, 0x3eb7b6a219dea9f4uL, 0x3e80cbcc8d4c5c8auL, 0x3e2425bb231a5e29uL,
     0x3d9992a4beac8662uL, 0x3ce191ba5ed3fb67uL, 0x3bc892450bad44c4uL, 0x0000000000000000uL,
     },
    {
     0xbea8c4c1fd7852feuL, 0xbfccce16b1046f13uL, 0xbf81a16f224bb7b6uL, 0xbf62cbf00406bc09uL,
     0x3f75b29bb02cf69buL, 0x3f607df0f9f90c17uL, 0xbf4b852a6e0758d5uL, 0xbf0078c63d1b8445uL,
     0x3eec12eadd55be7auL, 0xbe6fa600f593181buL, 0xbe5a3c935dce3f7duL, 0xbe001c6d95e3ae96uL,
     0xbd74755a00ea1fd3uL, 0xbcbc1c6c063bb7acuL, 0xbba3be9a4460fe00uL, 0x0000000000000000uL,
     },
    {
     0xbf822404577aa9dduL, 0x403d8b07f7a82aa3uL, 0xbf9f44ab92fbab0auL, 0x3fb2eac604473d6auL,
     0x3f45f87d903aaac8uL, 0xbf5e104671036300uL, 0x3f19bc98ddf0f340uL, 0x3f0d4304bc9246e8uL,
     0xbed13c415f7b9d41uL, 0xbe722b8d9720cdb0uL, 0x3e322666d739bec0uL, 0x3dd76a553d7e7918uL,
     0x3d4de0fa59416a39uL, 0x3c948716cf3681b4uL, 0x3b873f9f2d2fda99uL, 0x0000000000000000uL,
     },
    {
     0xbefdd99a221ed573uL, 0x4070593a3735bab4uL, 0xbfccab654e44835euL, 0x3fd13ed80037dbacuL,
     0xbf6045b9076cc487uL, 0x3f2085ee7e8ac170uL, 0x3f23524622610430uL, 0xbeff12a6626911b4uL,
     0x3eab9008bca408afuL, 0x3e634df71865f620uL, 0xbe05bb1bcf83ca73uL, 0xbdaf2ac143fb6762uL,
     0xbd23eae52a3dbf57uL, 0xbc6b5e3e9ca0955euL, 0xbb5eca68e2c1ba2euL, 0x0000000000000000uL,
     },
    {
     0x3f6e3be689423841uL, 0xc0d263511f5baac1uL, 0x40169f73b15ebe5cuL, 0xc025c1dd41cd6cb5uL,
     0xbf58fd89fe05e0d1uL, 0x3f73f7af01d5af7auL, 0xbf1e40bdead17e6buL, 0x3ee224cd6c4513e5uL,
     0xbe24b645e68eeaa3uL, 0xbe4abfebfb72bc83uL, 0x3dd51c38f8695ed3uL, 0x3d8313ac38c6832buL,
     0x3cf7787935626685uL, 0x3c401ffc49c6bc29uL, 0xbabf0b21acfa52abuL, 0x0000000000000000uL,
     },
    {
     0xbf2a1306713a4f3auL, 0xc1045e509116b066uL, 0x4041fab9250984ceuL, 0xc0458d090ec3de95uL,
     0xbf74949d60113d63uL, 0x3f7c9fd6200d0adeuL, 0x3f02cd40e0ad0a9fuL, 0xbe858ab8e019f311uL,
     0xbe792fa6323b7cf8uL, 0x3e2df04d67876402uL, 0xbd95c72be95e4d2cuL, 0xbd55a89c30203106uL,
     0xbccad6b3bb9eff65uL, 0xbc12705ccd3dd884uL, 0xba8e0a4c47ae75f5uL, 0x0000000000000000uL,
     },
    {
     0xbf55d7e76dc56871uL, 0x41528c38809c90c7uL, 0xc076d57fb5190b02uL, 0x4085f09f888f8adauL,
     0x3fa246332a2fcba5uL, 0xbfb29d851a896fcduL, 0x3ed9065ae369b212uL, 0xbeb8e1ba4c98a030uL,
     0x3e6ffd0766ad4016uL, 0xbe0c63c29f505f5buL, 0xbd7fab216b9e0e49uL, 0x3d2826b62056aa27uL,
     0x3ca313e31762f523uL, 0x3bea37aa21895319uL, 0x3ae5c7f1fd871496uL, 0x0000000000000000uL,
     },
    {
     0x3f35e67ab76a26e7uL, 0x41848ee0627d8206uL, 0xc0a216d618b489ecuL, 0x40a5b89107c8af4fuL,
     0x3fb69d8374520edauL, 0xbfbded519f981716uL, 0xbef02d288b5b3371uL, 0x3eb290981209c1a6uL,
     0xbe567e924bf5ff6euL, 0x3de3f7f7de6b0eb6uL, 0x3d69ed18bae3ebbcuL, 0xbcf7534c4f3dfa71uL,
     0xbc730b73f1eaff20uL, 0xbbba2cff8135d462uL, 0xbab5a71b5f7d9035uL, 0x0000000000000000uL,
     },
    0x7ff80000u,
    0x3fc00000u,
    0x00780000u,
    {

     0x0000000000000000uL,
     0x0000000000000000uL,
     0x3FF0000000000000uL,
     0xBD197DEAD79668D3uL,
     0xBFD555555553AF3CuL,
     0xBE052F7CCA134846uL,
     0x3FC11111563849D6uL,
     0xBEB038623673FFB2uL,
     0xBFAB9F685E64022EuL,
     0xBF2A54E2B28F2207uL,
     0x3F97CFB9328A230EuL,
     0xBF75CA6D61723E02uL,

     0x0000000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C3708A564FAD29AuL,
     0x3FC0E6973998DA48uL,
     0x3FEF712EB25C0888uL,
     0xBFC09B296F7C1EA9uL,
     0xBFD3DD77541EDDA7uL,
     0x3FB58FFCF4309615uL,
     0x3FBD3ABE845DCF49uL,
     0xBFA791DF538C37FAuL,
     0xBFA4F872F69CD6E8uL,
     0x3F9772E49EF6412BuL,
     0x3F8CBC0807393909uL,
     0xBF85F06A30F93319uL,

     0xBFC1000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C6004EE5739DEACuL,
     0x3FC2DC968E6E0D62uL,
     0x3FEF4E1E606D96DFuL,
     0xBFC273BD70994AB9uL,
     0xBFD382B548270D2CuL,
     0x3FB7CD2D582A6B29uL,
     0x3FBC1278CCCBF0DBuL,
     0xBFA9C7F5115B86A1uL,
     0xBFA371C21BAF618EuL,
     0x3F9958943F68417EuL,
     0x3F8930D5CFFD4152uL,
     0xBF875CF7ADD31B76uL,

     0xBFC3000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C7EABE24E052A1FuL,
     0x3FC4D04783618C71uL,
     0x3FEF2765AF97A4B3uL,
     0xBFC443654205FEA5uL,
     0xBFD31F2E208A5B97uL,
     0x3FB9F235BD339878uL,
     0x3FBAD0B0DFCCA141uL,
     0xBFABD1B9600E608EuL,
     0xBFA1CEBEAF07DB58uL,
     0x3F9AFC9FB1D8EFD2uL,
     0x3F8573444F1AB502uL,
     0xBF8874FBC8F24406uL,

     0xBFC5000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C7FB199D361A790uL,
     0x3FC6C170259E21F7uL,
     0x3FEEFD17479F7C65uL,
     0xBFC609530FE4DF8DuL,
     0xBFD2B3465D71B4DEuL,
     0x3FBBFD2D34AC509BuL,
     0x3FB9778C3C16A0FEuL,
     0xBFADAC4D9E63C665uL,
     0xBFA0139CCAD02D60uL,
     0x3F9C5BF43BA6F19DuL,
     0x3F8190B703350341uL,
     0xBF8936606782858AuL,

     0xBFC7000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C6A917CA3624D50uL,
     0x3FC8AFD7B974FABBuL,
     0x3FEECF47624A5D03uL,
     0xBFC7C4C2CB4FDE4DuL,
     0xBFD23F69CB2C1F9DuL,
     0x3FBDEC5703A03814uL,
     0x3FB8095003D0CF15uL,
     0xBFAF554B47B10CBBuL,
     0xBF9C89743FE7BC1BuL,
     0x3F9D74725B746E7CuL,
     0x3F7B2D8AFB70B88CuL,
     0xBF89A0A2883EF6CBuL,

     0xBFC9000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C7608279E8609CBuL,
     0x3FCA9B46D2DDC5E3uL,
     0x3FEE9E0BB72A01A1uL,
     0xBFC974FAD10C5330uL,
     0xBFD1C40ACCBA4044uL,
     0x3FBFBE24E2987853uL,
     0x3FB6885B4345E47FuL,
     0xBFB06563D5670584uL,
     0xBF98CD1D620DF6E2uL,
     0x3F9E44EF3E844D21uL,
     0x3F7325FA0148CAAEuL,
     0xBF89B4C8556C2D92uL,

     0xBFCB000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C6F19DAA20F51D5uL,
     0x3FCC83876CA98E15uL,
     0x3FEE697B662D07CDuL,
     0xBFCB194C7ED76ACFuL,
     0xBFD141A19E419762uL,
     0x3FC0B89C64BC7B98uL,
     0x3FB4F721150BBFC5uL,
     0xBFB105AAFAB87898uL,
     0xBF94FB3B31248C01uL,
     0x3F9ECD31E588709CuL,
     0x3F664A91A335C105uL,
     0xBF89754E32E1E26EuL,

     0xBFCD000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C6AC6C889D8111DuL,
     0x3FCE6864FE55A3D0uL,
     0x3FEE31AEE116B82BuL,
     0xBFCCB114B69E808BuL,
     0xBFD0B8AB913BA99DuL,
     0x3FC1823322BED48AuL,
     0x3FB35822B7929893uL,
     0xBFB18B03CC78D2DAuL,
     0xBF911CCC3C8D5E5DuL,
     0x3F9F0DEC2D99B12FuL,
     0x3F4A28398B4EBD98uL,
     0xBF88E60CB2FAB9A4uL,

     0xBFCF000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C89D2B6774FB61DuL,
     0x3FD09C744F539BE4uL,
     0x3FEDD823B0400D42uL,
     0xBFCEFBF7FF305FCCuL,
     0xBFCFC01DC4F24A41uL,
     0x3FC291A2C26D5548uL,
     0x3FB0D562E672D188uL,
     0xBFB2201ECC119E06uL,
     0xBF8695D50F778D31uL,
     0x3F9EEC8CFBC031A0uL,
     0xBF6030F0A4D3660AuL,
     0xBF87845288A4AEF5uL,

     0xBFD1000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C8B6AAB614D1C8DuL,
     0x3FD275F7E1CF7F63uL,
     0x3FED56658F74C9CCuL,
     0xBFD0ECC045EBD596uL,
     0xBFCD5A4BDE179180uL,
     0x3FC3C00047D34767uL,
     0x3FAAC7CE84FD609FuL,
     0xBFB288948D2E8B43uL,
     0xBF6D6605AAD5A1C0uL,
     0x3F9DDB0790848E97uL,
     0xBF75FDE291BAD5B4uL,
     0xBF84CEA5C52E0A78uL,

     0xBFD3000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C7139A81C8A6ECFuL,
     0x3FD4470650036407uL,
     0x3FECC9A69DFDDD48uL,
     0xBFD23DED3A37A09FuL,
     0xBFCAD302395D51C1uL,
     0x3FC4A8FE3F309C22uL,
     0x3FA3D161188AA436uL,
     0xBFB288CFE5494E98uL,
     0x3F6C7903EED8D334uL,
     0x3F9BE023CDFB02F6uL,
     0xBF80F8296F2C3A95uL,
     0xBF8152DF4790049BuL,

     0xBFD5000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C7751FE0FEE8335uL,
     0x3FD60EF7120502A9uL,
     0x3FEC32D951E56E6FuL,
     0xBFD370255FC004F8uL,
     0xBFC832F0EBC6BB41uL,
     0x3FC54C99A0FF432FuL,
     0x3F99DAC0CC283C18uL,
     0xBFB227B3896A026DuL,
     0x3F84663364E1FB19uL,
     0x3F9922D70DE07C57uL,
     0xBF85C4A4EB6F86BCuL,
     0xBF7AAB61214FFE17uL,

     0xBFD7000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3BFE67F266843B2CuL,
     0x3FD7CD3115FC0F16uL,
     0x3FEB92F96CCC2C5BuL,
     0xBFD4827320135092uL,
     0xBFC582B15550168AuL,
     0x3FC5AC3B9A2E4C31uL,
     0x3F88FA599FCADAFBuL,
     0xBFB16EC8F5CA169EuL,
     0x3F90140EFC748BBEuL,
     0x3F95CFC49C1A28DCuL,
     0xBF8946ED8B1BF454uL,
     0xBF7239E55C1DD50FuL,

     0xBFD9000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C6412330191189CuL,
     0x3FD9812B3B03F0A5uL,
     0x3FEAEB08C3C0E84DuL,
     0xBFD57446B1BC46CFuL,
     0xBFC2CA9ABC0444ADuL,
     0x3FC5CA95F9460D18uL,
     0xBF2C2DAA35DD05C3uL,
     0xBFB069A516EEB75DuL,
     0x3F9512716416FDC7uL,
     0x3F921630CB1319A3uL,
     0xBF8B76DA2EC99526uL,
     0xBF63A97474A161E4uL,

     0xBFDB000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C89B79F5783381CuL,
     0x3FDB2A6C993B829DuL,
     0x3FEA3C0C1FBA328CuL,
     0xBFD6457212F78DE0uL,
     0xBFC0129BDA380A66uL,
     0x3FC5AB77F388FBDEuL,
     0xBF8822F3A6CADB7CuL,
     0xBFAE4A876370A4BDuL,
     0x3F991A89BC3B7710uL,
     0x3F8C4A4328204D4BuL,
     0xBF8C5F921D01EC0BuL,
     0xBF3EE844C5B79FB8uL,

     0xBFDD000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C73FA437AD7AD87uL,
     0x3FDCC88C9902CF45uL,
     0x3FE9870845162D1DuL,
     0xBFD6F62358F73DA8uL,
     0xBFBAC4345D675FE1uL,
     0x3FC5539DA8287019uL,
     0xBF96E3E0DC04A09FuL,
     0xBFAB5EC7147C207DuL,
     0x3F9C24166FFA7A58uL,
     0x3F8451B907819844uL,
     0xBF8C1C6D19191FCBuL,
     0x3F547372DF72E35AuL,

     0xBFDF000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C848FE06EE49950uL,
     0x3FDF20211A36475DuL,
     0x3FE86E67E6B80AC2uL,
     0xBFD7C37C55474D9BuL,
     0xBFB2EBF15F3CB036uL,
     0x3FC4718C8EF6E3AAuL,
     0xBFA277F8394E9B07uL,
     0xBFA680312AB207E3uL,
     0x3F9EDC9A8B57E286uL,
     0x3F71B8C5E648EAF6uL,
     0xBF89DB218356730CuL,
     0x3F6B05728E6EBC8EuL,

     0xBFE1000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C8429831EDD94DEuL,
     0x3FE10AF47E0BF610uL,
     0x3FE6EC5879F87EEEuL,
     0xBFD86AD001BFE200uL,
     0xBFA239045B661385uL,
     0x3FC2B4572D9CC147uL,
     0xBFA99F4F01740705uL,
     0xBF9F449C484F4879uL,
     0x3F9F5F42169D7DDEuL,
     0xBF6111B1BA632A97uL,
     0xBF84725FBE5B6E61uL,
     0x3F7438A2986CFA9CuL,

     0xBFE3000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C6BE9160BFB3505uL,
     0x3FE26D76F73233C7uL,
     0x3FE56363B5B93937uL,
     0xBFD8A2244B27297EuL,
     0xBF52CA2F101EEF63uL,
     0x3FC081BC342243ADuL,
     0xBFAE38DB4A932344uL,
     0xBF91F814D4AE90C6uL,
     0x3F9D056AE193C4F3uL,
     0xBF7BD0B502D8F3A0uL,
     0xBF7B763F7BB8AE2FuL,
     0x3F76036F42D9AB69uL,

     0xBFE5000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C8B64AF0450486EuL,
     0x3FE3B75F8BCB742DuL,
     0x3FE3DA23BC12369FuL,
     0xBFD8768FF4B46416uL,
     0x3F9D67CB8AD9CB1AuL,
     0x3FBC168CB7827DF4uL,
     0xBFB03A2B83C9272EuL,
     0xBF789FEB595297DCuL,
     0x3F98BD01B4C335E7uL,
     0xBF83BADC303D6535uL,
     0xBF6C54E7A1C1E3F3uL,
     0x3F7408394B7EF3E7uL,

     0xBFE7000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C6A48557F6E0D3EuL,
     0x3FE4E8D895B010DCuL,
     0x3FE25652FAAF8A73uL,
     0xBFD7F6C3A57C444BuL,
     0x3FAB7866E3F99EBEuL,
     0x3FB6FA1DF47CCD40uL,
     0xBFB05508D3741B8EuL,
     0x3F6C3EFDF7BB279CuL,
     0x3F9372BADD6D3E27uL,
     0xBF860FD5AE65F3DAuL,
     0xBF47266FFB07E628uL,
     0x3F6F9763992C2A05uL,

     0xBFE9000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C6BB6A2B194E3ABuL,
     0x3FE602609AAE7C22uL,
     0x3FE0DCBAFE191C7FuL,
     0xBFD732028428A9FBuL,
     0x3FB2D92389BE065BuL,
     0x3FB1F6A9C8C49993uL,
     0xBFAF47C0B50B56EEuL,
     0x3F85A8EDD1356223uL,
     0x3F8BE05C5CD1B4FAuL,
     0xBF85A0EFE4552F76uL,
     0x3F559F2A6A356194uL,
     0x3F6576F5E989208DuL,

     0xBFEB000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C80328BD86C8B74uL,
     0x3FE704BB1B7FCB81uL,
     0x3FDEE264AAD6C40CuL,
     0xBFD637493CE659F1uL,
     0x3FB6BE3A3DEE6F4AuL,
     0x3FAA85EB6470AC0FuL,
     0xBFACC0146EA4858DuL,
     0x3F8F8FB683CDDAC5uL,
     0x3F819515DEE2CB91uL,
     0xBF834E45E6AF9EA1uL,
     0x3F65250F197CA56DuL,
     0x3F57A766026D036CuL,

     0xBFED000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C716F7EEF7B61ADuL,
     0x3FE7F0E1A4CD846EuL,
     0x3FDC2D4CC872DC09uL,
     0xBFD514A99F92ED53uL,
     0x3FB9846A6CF2F337uL,
     0x3FA20896939AB161uL,
     0xBFA97E801F31EE0DuL,
     0x3F92A11F47B82085uL,
     0x3F717D70FE289C34uL,
     0xBF7FDCF1D3F6CE2DuL,
     0x3F69F607E81AF6B6uL,
     0x3F3F925C80D0F889uL,

     0xBFEF000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C931A11D7E8606EuL,
     0x3FE92BFB370D9B71uL,
     0x3FD866160E454111uL,
     0xBFD33149F3801DBAuL,
     0x3FBBDB6D4C949899uL,
     0x3F8D6AB2A74B9343uL,
     0xBFA404D1047C5D72uL,
     0x3F93C47D9ACCD919uL,
     0xBF41B755642CFF1BuL,
     0xBF74B5301AA1E788uL,
     0x3F69A84C5B2A3E68uL,
     0xBF3CF47830328C11uL,

     0xBFF1000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C884D471B8FD396uL,
     0x3FEA8DBCBC31897AuL,
     0x3FD3EE730537C8EAuL,
     0xBFD08A05AD27CE32uL,
     0x3FBC5255406F84B6uL,
     0xBF772FA2F633AA5EuL,
     0xBF99DD8E4C473FC4uL,
     0x3F9183C935B6495DuL,
     0xBF70471A3A591480uL,
     0xBF603DDD4DEBB9A4uL,
     0x3F62591E44D3C17FuL,
     0xBF4C195D3A9B1AB4uL,

     0xBFF3000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C90DD1C9BFF7F64uL,
     0x3FEBAD50A4A68BC1uL,
     0x3FD01FBA72CEE1A5uL,
     0xBFCBE432F647C4D6uL,
     0x3FBABF92B6E5AC73uL,
     0xBF922983AA24E217uL,
     0xBF8C72214C14E23AuL,
     0x3F8ACB4D1F388E8BuL,
     0xBF740EF8B4A2EE3BuL,
     0xBF0EA9F30C8DC900uL,
     0x3F53CC40D18713AEuL,
     0xBF4848B86029CBA1uL,

     0xBFF5000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C8FB61781D22681uL,
     0x3FEC950A3340C8BFuL,
     0x3FC9E1DFFD385423uL,
     0xBFC71E2FF88EBA23uL,
     0x3FB80AEBD07AB5BAuL,
     0xBF98404E27EAE6EDuL,
     0xBF772DA520B5006EuL,
     0x3F824C9268AF9423uL,
     0xBF722AE76D206AE3uL,
     0x3F4B807F56298D5EuL,
     0x3F3D71027DF95D2AuL,
     0xBF3EBD17676755FBuL,

     0xBFF7000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C95393C63CE8224uL,
     0x3FED4E6F464286B0uL,
     0x3FC4A45842B7DE1EuL,
     0xBFC2E7885AFDD3D0uL,
     0x3FB4DD6DD51D3FEBuL,
     0xBF9A05D3ADAB489CuL,
     0xBF3459B643B4995CuL,
     0x3F766B30745F2E3AuL,
     0xBF6C2C891E555BDFuL,
     0x3F5194F30D6C576DuL,
     0x3EF4DBB43C3132A2uL,
     0xBF2E45EBAB3C15A0uL,

     0xBFF9000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C75111669651DAAuL,
     0x3FEDE1EB5937518FuL,
     0x3FC06129C7C8EBB1uL,
     0xBFBE9763041064E1uL,
     0x3FB1A5B9F9113928uL,
     0xBF992145039F9AFEuL,
     0x3F66CB116EA49C89uL,
     0x3F67F972FDF30001uL,
     0xBF63A7B5975F02F3uL,
     0x3F4FDE7B8777F4C8uL,
     0xBF25918876626BA4uL,
     0xBF1495123C991F00uL,

     0xBFFB000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C9F29A5B7426D27uL,
     0x3FEE56B6F3EFABFCuL,
     0x3FB9E3EFD94BB9FCuL,
     0xBFB88BD9760FECA7uL,
     0x3FAD48A0350B3ACFuL,
     0xBF96CC6A5110F129uL,
     0x3F71934687170384uL,
     0x3F5407BAF73B3DF9uL,
     0xBF591B626C0646DDuL,
     0x3F48B0E1DD283558uL,
     0xBF2B322292840D2BuL,
     0xBE99E4061120C741uL,

     0xBFFD000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C6AF8C2041C67CDuL,
     0x3FEEB2DFEDD5EC93uL,
     0x3FB465A205CFB638uL,
     0xBFB3914BF68D39FFuL,
     0x3FA7F21A08C5C734uL,
     0xBF93DA9560EA9960uL,
     0x3F73953FEC62820EuL,
     0x3F2749D5E1273E3CuL,
     0xBF4D46B0B498CE5AuL,
     0x3F4153D680E1F4C4uL,
     0xBF28477014ECA6A2uL,
     0x3EFFAC54E07CEB4BuL,

     0xBFFF000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C7A8AF2BB2231F2uL,
     0x3FEF1994DF724FC8uL,
     0x3FAC65B1BC0C9D58uL,
     0xBFAB9937BDA747C8uL,
     0x3FA15B42D9EF931CuL,
     0xBF8EACD8E8507A3CuL,
     0x3F7263A15721C682uL,
     0xBF42A032ACDC3B32uL,
     0xBF3431E79B5AD185uL,
     0x3F31B51667C7DF5EuL,
     0xBF1F8709579250ADuL,
     0x3F01ED8ED1BF9595uL,

     0xC001000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C86F3F7C3DAFC55uL,
     0x3FEF73776B2AA2DBuL,
     0x3FA16A7FC4D7B900uL,
     0xBFA11E03803AD621uL,
     0x3F9609591597297FuL,
     0xBF847E74ED9BBB0CuL,
     0x3F6BFF771725CD65uL,
     0xBF491D1FF73C18FAuL,
     0x3EF53EE467B51DC5uL,
     0x3F160135BE0D94A0uL,
     0xBF0B32CB1D276A40uL,
     0x3EF4DAF70C12D555uL,

     0xC003000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C19DBF4E2E5B7DCuL,
     0x3FEFAA7934B75EBDuL,
     0x3F9545200830A42CuL,
     0xBF950C46D285F6BCuL,
     0x3F8B79F5BFC6513FuL,
     0xBF7A50ADAD777898uL,
     0x3F633A19BE8255E3uL,
     0xBF44E609BC2557B7uL,
     0x3F1AFCBAD60EAACDuL,
     0x3EE80476AC34A8EFuL,
     0xBEF278E23DE463E9uL,
     0x3EE209FAF377264DuL,

     0xC005000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C979D62702C631CuL,
     0x3FEFCC04CDBCDC4BuL,
     0x3F89E87D088D269AuL,
     0xBF89BE6721012B80uL,
     0x3F80F1C13E8D39D3uL,
     0xBF7082DBC9602757uL,
     0x3F590BE9BD4E0A11uL,
     0xBF3DCC2BEF6D0283uL,
     0x3F1A08065C4A8E85uL,
     0xBEE528117D0410F3uL,
     0xBED0BE73A44FF565uL,
     0x3EC9B0C11E342E38uL,

     0xC007000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C804B931AD7A3CCuL,
     0x3FEFE06EB0688212uL,
     0x3F7F81BD8876224DuL,
     0xBF7F62A8C699A963uL,
     0x3F74C31E2B2A6A28uL,
     0xBF6470D537F16227uL,
     0x3F4FAEEF61C89673uL,
     0xBF33C5E80B349783uL,
     0x3F138F3D31037A6BuL,
     0xBEEB3C780996FFE3uL,
     0x3E9D0C75BC8BFEFCuL,
     0x3EAC3865227764D4uL,

     0xC009000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C5B978B202749F9uL,
     0x3FEFECD6B7EA3128uL,
     0x3F73238B786137FEuL,
     0xBF731815ACEA072EuL,
     0x3F6956F0816D5AEEuL,
     0xBF591A16286C4885uL,
     0x3F43B3E3A00C6096uL,
     0xBF29441B2A56DEC7uL,
     0x3F0A99C3A2E857B6uL,
     0xBEE61CB034DDC151uL,
     0x3EB792BBC76D6107uL,
     0x3E761472362A16F0uL,

     0xC00B000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C9C290AFCBDE00DuL,
     0x3FEFF45F6D36133AuL,
     0x3F673CEC093032DEuL,
     0xBF67347A7CD844D5uL,
     0x3F5EDA25530355DBuL,
     0xBF4EAD3BBABC1BA9uL,
     0x3F3842E61CD35432uL,
     0xBF1F9AB7FD1A3DDDuL,
     0x3F0136C154EA3DEDuL,
     0xBEDF12807F721E66uL,
     0x3EB5B53687AD5112uL,
     0xBE801E90FBFED147uL,

     0xC00D000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C9E323294294877uL,
     0x3FEFF8F21CDAAA62uL,
     0x3F5C3470628813F2uL,
     0xBF5C2E38AC6FF8D2uL,
     0x3F52C13234626F43uL,
     0xBF42B0A47DF47BB4uL,
     0x3F2DB2889E32FBFDuL,
     0xBF1385FBD54C5A55uL,
     0x3EF5AFA812C6984EuL,
     0xBED47097C188A03CuL,
     0x3EAFF2B982F7EE8CuL,
     0xBE828EC5B57D424DuL,

     0xC00F000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C9BA40DA6983BECuL,
     0x3FEFFCAAC3F20E65uL,
     0x3F4AA87CF664754CuL,
     0xBF4AA5B62919E224uL,
     0x3F41C01B53B0B312uL,
     0xBF31B8B54D091751uL,
     0x3F1C431305954ECCuL,
     0xBF02B7DEAD0D44E6uL,
     0x3EE51C6EFF109EA9uL,
     0xBEC48CFB08072D17uL,
     0x3EA1585EC59CAE34uL,
     0xBE78832BAF950BA9uL,

     0xC011000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C8FBF237F4AFE10uL,
     0x3FEFFEC61279A3A4uL,
     0x3F339E78281A00EAuL,
     0xBF339DB7B072AD62uL,
     0x3F2A259E658EF4E4uL,
     0xBF1A219C312B10BAuL,
     0x3F04E146B4F5F4B7uL,
     0xBEEBC5F137088210uL,
     0x3ECF96736E300B00uL,
     0xBEAF4874840B91EBuL,
     0x3E8B6AB2B5C8FD3FuL,
     0xBE650BCCE62FD2B7uL,

     0xC013000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C9C869C85471703uL,
     0x3FEFFF8C81C6DC33uL,
     0x3F1CDF5A2E4D7C69uL,
     0xBF1CDEF1F9BE63BEuL,
     0x3F133EC10C83AAA0uL,
     0xBF033DAB325FAACBuL,
     0x3EEEC598FA98BAD8uL,
     0xBED47F1A15BA368EuL,
     0x3EB761FBE7D201C1uL,
     0xBE974CD75A43BF6BuL,
     0x3E74B02965BBF8DCuL,
     0xBE504EF4E3892A66uL,

     0xC015000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C643810400471B0uL,
     0x3FEFFFD583014825uL,
     0x3F053E71416C43CAuL,
     0xBF053E550C7C8CC9uL,
     0x3EFC52D0D90D4843uL,
     0xBEEC523A6ADBE142uL,
     0x3ED6A73E22D844B3uL,
     0xBEBE31D10F23ACD0uL,
     0x3EA13E14264DEAB2uL,
     0xBE81385ABB98EDCCuL,
     0x3E5EB9164593E0B6uL,
     0xBE387218CFE7772EuL,

     0xC017000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C92530433F4C703uL,
     0x3FEFFFF05E8D3191uL,
     0x3EEF42DDFA52B575uL,
     0xBEEF42CEB54212AAuL,
     0x3EE4D7201CBCB853uL,
     0xBED4D6F764B66C37uL,
     0x3EC0ABB806EBDE71uL,
     0xBEA6399CF854F876uL,
     0x3E8964B91728D7C9uL,
     0xBE6961A0528444D6uL,
     0x3E46AE3B0814EE00uL,
     0xBE221B8194DACD16uL,

     0xC019000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C7BB5622CE1A79EuL,
     0x3FEFFFFA3FF22708uL,
     0x3ED7003552D53503uL,
     0xBED7003130C1AB92uL,
     0x3ECEAAE13B699C45uL,
     0xBEBEAACB305F3D07uL,
     0x3EA8887F5F9C87EFuL,
     0xBE905AD08DF8454FuL,
     0x3E72B068300B703FuL,
     0xBE52AF921A71C058uL,
     0x3E30B53EAA35300DuL,
     0xBE0AB60CDAD7E22EuL,

     0xC01B000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C8BD1ACF80D7256uL,
     0x3FEFFFFDE2760A41uL,
     0x3EC0EC4F1EC27E55uL,
     0xBEC0EC4E005E6EACuL,
     0x3EB6906504BC4610uL,
     0xBEA6905F0D52C8B5uL,
     0x3E920D0F5CCE152BuL,
     0xBE7811505B10E753uL,
     0x3E5B811EE4F9B8EEuL,
     0xBE3B80ABC067E840uL,
     0x3E1898E394E09335uL,
     0xBDF3ABB5BA711DB7uL,

     0xC01D000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C8AE01DB39A3791uL,
     0x3FEFFFFF38C76668uL,
     0x3EA8E712E56E1188uL,
     0xBEA8E7124A650791uL,
     0x3EA09A0B62D8EF94uL,
     0xBE909A09C56C2107uL,
     0x3E7A900A90A54A6EuL,
     0xBE61B5557BB449B6uL,
     0x3E443CC74732CDCAuL,
     0xBE243CA8AA8D6E54uL,
     0x3E0219C341E0D1B4uL,
     0xBDDCF49A10950F13uL,

     0xC01F000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C75CB18F3775414uL,
     0x3FEFFFFFD38C39F0uL,
     0x3E8639E2F89493BBuL,
     0xBE8639E2D9B29562uL,
     0x3E7DA2836A1F706EuL,
     0xBE6DA282C6733DAEuL,
     0x3E57B53A278851FDuL,
     0xBE3F9C4A72536E22uL,
     0x3E220E81FBE19CDDuL,
     0xBE020E8875ADA8D8uL,
     0x3DE07634328384FCuL,
     0xBDBA54078E3C351FuL,

     0xC021000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C98B78738B0EDEFuL,
     0x3FEFFFFFF9FBEA40uL,
     0x3E581056FAC28C46uL,
     0xBE581056F63A4351uL,
     0x3E500AE49533790AuL,
     0xBE400AE489ACBA90uL,
     0x3E29AB0D59A1967BuL,
     0xBE111CB32D6EEF2BuL,
     0x3DF38CBADF396908uL,
     0xBDD38CC7B92CECD3uL,
     0x3DB1D2BBE2705032uL,
     0xBD8C8199294E6380uL,

     0xC023000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C8EEEC16618B984uL,
     0x3FEFFFFFFF2F9279uL,
     0x3E2A0DB0D052B148uL,
     0xBE2A0DB0CFA6AB71uL,
     0x3E215E75D53A3105uL,
     0xBE115E75D40AA47FuL,
     0x3DFBCA5CDC12ED1CuL,
     0xBDE286E85704FC22uL,
     0x3DC52A8925354517uL,
     0xBDA52A97EA3F5F4AuL,
     0x3D834C011A2AC0F7uL,
     0xBD5EDD05BDCB3A62uL,

     0xC025000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C6BD8B474BBF792uL,
     0x3FEFFFFFFFE3CAD8uL,
     0x3DFC3527E43C565FuL,
     0xBDFC3527E420F415uL,
     0x3DF2CE1A8D806DADuL,
     0xBDE2CE1A8DDF690AuL,
     0x3DCE169832D8BD68uL,
     0xBDB40F0FE853DA5BuL,
     0x3D96EA8D930D31A1uL,
     0xBD76EA9DB0D09839uL,
     0x3D54E474FD4303A1uL,
     0xBD30B526CA2B228AuL,

     0xC027000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C56E8953D525FD5uL,
     0x3FEFFFFFFFFC2EB9uL,
     0x3DCE8A37A48016C2uL,
     0xBDCE8A37A479B7D4uL,
     0x3DC45C250CFA9C16uL,
     0xBDB45C250D9F8467uL,
     0x3DA049BB33CBD4E9uL,
     0xBD85B7A407C422C1uL,
     0x3D68CF9CED2B3FD5uL,
     0xBD48CFAE64C352B3uL,
     0x3D269EAE08690D52uL,
     0xBD0216CBEAFFF5AAuL,

     0xC029000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C8ACF1392B106D3uL,
     0x3FEFFFFFFFFF7BBDuL,
     0x3DA088529889B316uL,
     0xBDA088529887F4C4uL,
     0x3D960B18BF1DF711uL,
     0xBD860B18BFD99A48uL,
     0x3D71A27E7CA64143uL,
     0xBD5783530EA76D91uL,
     0x3D3ADCC75CBD2A03uL,
     0xBD1ADCDA46BE5F17uL,
     0x3CF87D77650BE5B8uL,
     0xBCD395AE6E74C6D2uL,

     0xC02B000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C97A8A295292858uL,
     0x3FEFFFFFFFFFEE19uL,
     0x3D71E642BB008F95uL,
     0xBD71E642BAFEEC54uL,
     0x3D67DDAE41647741uL,
     0xBD57DDAE4230F34BuL,
     0x3D4317C33FAE2536uL,
     0xBD2975040D3E26B9uL,
     0x3D0D155DCD0F0AFBuL,
     0xBCED157247832B20uL,
     0x3CCA83D70F607C28uL,
     0xBCA5343952C1E19EuL,

     0xC02D000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C9B7876CBC5306EuL,
     0x3FEFFFFFFFFFFD93uL,
     0x3D436121E2640D76uL,
     0xBD436121E26250EAuL,
     0x3D39D6D7CA259186uL,
     0xBD29D6D7CB0327CEuL,
     0x3D14ABE4DC31244AuL,
     0xBCFB8FDB82AB6BB7uL,
     0x3CDF7CF757491B60uL,
     0xBCBF7D0D833640FBuL,
     0x3C9CB512F6BDC754uL,
     0xBC76F50AB1B0E9BAuL,

     0xC02F000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C6FFE15D5F78543uL,
     0x3FEFFFFFFFFFFFE1uL,
     0x3CFEE00288B99C26uL,
     0xBCFEE0027D060EE2uL,
     0x3CF4954AA23148A2uL,
     0xBCE4954B5DAD3010uL,
     0x3CD07883DD8793BDuL,
     0xBCB5F5F4BB87ADCFuL,
     0x3C98F1A905097685uL,
     0xBC78F2D585007222uL,
     0x3C58A37CC5082B5FuL,
     0xBC33AE7917F94D17uL,

     0xC031000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x3C91BF1D80474F0FuL,
     0x3FEFFFFFFFFFFFFEuL,
     0x3CB72071400E6275uL,
     0xBCB72071400A9F37uL,
     0x3CAED5EC39A77629uL,
     0xBC9ED5EC3B530600uL,
     0x3C88AB2BFED159DEuL,
     0xBC70721D1220B3FCuL,
     0x3C52C96049721FB8uL,
     0xBC32C971215735DCuL,
     0x3C112EF658AB41A9uL,
     0xBBEB7B598C6AD3DEuL,

     0xC03287E0C98F84E5uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x0000000000000000uL,
     0x3FF0000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,

     0x0000000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,
     0x0000000000000000uL,
     },
    0xFFFFFFFF00000000uL,
    0x8000000000000000uL,
    0x7fffffffffffffffuL,
    0x7ffe0000u,
    0x7fe00000u,
    0x3fbe0000u,
    0x00760000u,

    0x1FF00000u,

};

static __constant _iml_v2_dp_union_t _imldTanhHATab_v2[2] = {
    0x00000000, 0x3FF00000,
    0x00000000, 0xBFF00000,
};

__attribute__((always_inline))
inline int __internal_dtanh_la_cout (double *a, double *r)
{
    int nRet = 0;
    double dSign;
    _iml_uint32_t expnt;

    dSign = ((__constant double *) _imldTanhHATab_v2)[((((_iml_v2_dp_union_t *) & a[0])->dwords.hi_dword >> 31))];

    if ((((((_iml_v2_dp_union_t *) & a[0])->dwords.hi_dword >> 20) & 0x7FF) != 0x7FF))
    {

        expnt = ((((_iml_v2_dp_union_t *) & a[0])->dwords.hi_dword >> 20) & 0x7FF);

        if (expnt == 0x7fe)
        {

            r[0] = dSign;
        }
        else
        {

            r[0] = a[0] * (a[0] + (((__constant double *) _imldTanhHATab_v2)[(0)]));
        }
    }
    else if ((((((_iml_v2_dp_union_t *) & a[0])->dwords.hi_dword & 0x000FFFFF) == 0) && ((((_iml_v2_dp_union_t *) & a[0])->dwords.lo_dword) == 0)))
    {

        r[0] = dSign;
    }
    else
    {

        r[0] = a[0] + a[0];
    }

    return nRet;
}

double __ocl_svml_tanh (double a)
{

    double va1;
    double vr1;
    unsigned int vm;

    double r;

    va1 = a;;

    {

        double dSignX;
        double dAbsX;
        double p[18];
        double poly;
        double dScaledX;
        double dC;

        unsigned int iMaskedIn;
        unsigned int iSpecIndex;
        unsigned int iSpecIndexTiny;
        unsigned int iMaxTinyArg;

        unsigned long lX;
        unsigned int iX;
        unsigned int iZero;
        unsigned int iMask1;
        unsigned int iMask2;

        unsigned int iIndex;
        unsigned long lIndex;
        double dbSignMask;
        double dbAbsMask;
        unsigned int iExpMantMask;
        unsigned int iExpMask;
        unsigned int iMinIdxOfsMask;
        unsigned int iMaxIdxMask;

        dbSignMask = as_double (__internal_dtanh_la_data._dbSignMask);
        dbAbsMask = as_double (__internal_dtanh_la_data._dbAbsMask);
        iExpMask = (__internal_dtanh_la_data._iExpMask);

        iExpMantMask = (__internal_dtanh_la_data._iExpMantMask);
        iMinIdxOfsMask = (__internal_dtanh_la_data._iMinIdxOfsMask);
        iMaxIdxMask = (__internal_dtanh_la_data._iMaxIdxMask);

        iZero = 0;

        dAbsX = as_double ((as_ulong (va1) & as_ulong (dbAbsMask)));
        dSignX = as_double ((as_ulong (va1) & as_ulong (dbSignMask)));

        lX = as_ulong (va1);
        iX = ((unsigned int) ((unsigned long) lX >> 32));

        iMaskedIn = (iX & iExpMantMask);
        iSpecIndex = ((unsigned int) (-(signed int) ((signed int) iMaskedIn > (signed int) iExpMask)));
        vm = 0;
        vm = iSpecIndex;

        iIndex = (iMaskedIn - iMinIdxOfsMask);

        iMask1 = ((unsigned int) (-(signed int) ((signed int) iIndex > (signed int) iZero)));
        iMask2 = ((unsigned int) (-(signed int) ((signed int) iIndex > (signed int) iMaxIdxMask)));
        iIndex = (iIndex & iMask1);
        iIndex = (((~(iMask2)) & (iIndex)) | ((iMask2) & (iMaxIdxMask)));
        iIndex = ((unsigned int) (iIndex) >> ((17 - 4 - 3)));
        (p + 0)[0] = as_double (((__constant unsigned long *) ((__constant char *) (&__internal_dtanh_la_data._dbP[0]) + 0 * 8))[iIndex >> 3]);
        (p + 0)[1] = as_double (((__constant unsigned long *) ((__constant char *) (&__internal_dtanh_la_data._dbP[0]) + 0 * 8))[(iIndex >> 3) + 1]);
        (p + 2)[0] = as_double (((__constant unsigned long *) ((__constant char *) (&__internal_dtanh_la_data._dbP[0]) + 2 * 8))[iIndex >> 3]);
        (p + 2)[1] = as_double (((__constant unsigned long *) ((__constant char *) (&__internal_dtanh_la_data._dbP[0]) + 2 * 8))[(iIndex >> 3) + 1]);
        (p + 4)[0] = as_double (((__constant unsigned long *) ((__constant char *) (&__internal_dtanh_la_data._dbP[0]) + 4 * 8))[iIndex >> 3]);
        (p + 4)[1] = as_double (((__constant unsigned long *) ((__constant char *) (&__internal_dtanh_la_data._dbP[0]) + 4 * 8))[(iIndex >> 3) + 1]);
        (p + 6)[0] = as_double (((__constant unsigned long *) ((__constant char *) (&__internal_dtanh_la_data._dbP[0]) + 6 * 8))[iIndex >> 3]);
        (p + 6)[1] = as_double (((__constant unsigned long *) ((__constant char *) (&__internal_dtanh_la_data._dbP[0]) + 6 * 8))[(iIndex >> 3) + 1]);
        (p + 8)[0] = as_double (((__constant unsigned long *) ((__constant char *) (&__internal_dtanh_la_data._dbP[0]) + 8 * 8))[iIndex >> 3]);
        (p + 8)[1] = as_double (((__constant unsigned long *) ((__constant char *) (&__internal_dtanh_la_data._dbP[0]) + 8 * 8))[(iIndex >> 3) + 1]);
        (p + 10)[0] = as_double (((__constant unsigned long *) ((__constant char *) (&__internal_dtanh_la_data._dbP[0]) + 10 * 8))[iIndex >> 3]);
        (p + 10)[1] =
            as_double (((__constant unsigned long *) ((__constant char *) (&__internal_dtanh_la_data._dbP[0]) + 10 * 8))[(iIndex >> 3) + 1]);
        (p + 12)[0] = as_double (((__constant unsigned long *) ((__constant char *) (&__internal_dtanh_la_data._dbP[0]) + 12 * 8))[iIndex >> 3]);
        (p + 12)[1] =
            as_double (((__constant unsigned long *) ((__constant char *) (&__internal_dtanh_la_data._dbP[0]) + 12 * 8))[(iIndex >> 3) + 1]);

        dScaledX = (dAbsX + p[12]);
        poly = SPIRV_OCL_BUILTIN(fma, _f64_f64_f64, ) (p[11], dScaledX, p[10]);
        poly = SPIRV_OCL_BUILTIN(fma, _f64_f64_f64, ) (poly, dScaledX, p[9]);
        poly = SPIRV_OCL_BUILTIN(fma, _f64_f64_f64, ) (poly, dScaledX, p[8]);
        poly = SPIRV_OCL_BUILTIN(fma, _f64_f64_f64, ) (poly, dScaledX, p[7]);
        poly = SPIRV_OCL_BUILTIN(fma, _f64_f64_f64, ) (poly, dScaledX, p[6]);
        poly = SPIRV_OCL_BUILTIN(fma, _f64_f64_f64, ) (poly, dScaledX, p[5]);
        poly = SPIRV_OCL_BUILTIN(fma, _f64_f64_f64, ) (poly, dScaledX, p[4]);
        poly = SPIRV_OCL_BUILTIN(fma, _f64_f64_f64, ) (poly, dScaledX, p[3]);
        poly = SPIRV_OCL_BUILTIN(fma, _f64_f64_f64, ) (poly, dScaledX, p[2]);
        poly = SPIRV_OCL_BUILTIN(fma, _f64_f64_f64, ) (poly, dScaledX, p[1]);

        vr1 = as_double ((as_ulong (poly) | as_ulong (dSignX)));
    }

    if ((vm) != 0)
    {
        double _vapi_arg1[1];
        double _vapi_res1[1];
        ((double *) _vapi_arg1)[0] = va1;
        ((double *) _vapi_res1)[0] = vr1;
        __internal_dtanh_la_cout (_vapi_arg1, _vapi_res1);
        vr1 = ((double *) _vapi_res1)[0];
    };
    r = vr1;;

    return r;

}
